home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 096 / viewer.arc / VIEWER.BAS < prev    next >
Encoding:
BASIC Source File  |  1985-05-14  |  7.7 KB  |  185 lines

  1. 100 '   *********************************************************************
  2. 110 '       VIEWER.BAS      VERSION 1.01    MAY 14, 1985           (C) 1985
  3. 120 '   *********************************************************************
  4. 130 '                            BY Marshall W. Magee
  5. 140 '   *********************************************************************
  6. 150 '                       MAGEE ENTERPRISES
  7. 160 '                       6577 Peachtree Industrial Blvd.
  8. 170 '                       Norcross, Georgia  30092-3796
  9. 180 '                       CompuServe [70167,2200]
  10. 190 '                       (404) 447-9410
  11. 200 '   *********************************************************************
  12. 210 '    This program supports ANSI Color control sequences and sound.
  13. 220 '    It handles ANSI function calls CUP, HVP, SGR and ED.
  14. 230 '   *********************************************************************
  15. 240 '
  16. 250 ON ERROR GOTO 1870
  17. 260 DIM CODES(20)
  18. 270 SCREEN 0,0,0
  19. 280 CLOSE
  20. 290 WIDTH 80
  21. 300 HIGH=0 : UNDER=0 : BLINK=0 : REVERSE=0 : INVISIBLE=0
  22. 310 FORE=7 : BACK=0
  23. 320 LINES=0
  24. 330 COLOR FORE,BACK,0
  25. 340 CLS
  26. 350 COLOR 6
  27. 360 PRINT TAB(15);"        ANSI ";
  28. 370 COLOR 11: PRINT "C"; : COLOR 5 : PRINT "O";
  29. 380 COLOR 12: PRINT "L"; : COLOR 3 : PRINT "O";
  30. 390 COLOR 2 : PRINT "R";
  31. 400 COLOR 6
  32. 410 PLAY "MBL24T250ABCDEFG" : PRINT " & Music File Viewer"
  33. 420 PRINT TAB(15);"**************************************************"
  34. 430 PRINT TAB(15);"*  VIEWER.BAS      VERSION 1.01        (C) 1985  *"
  35. 440 PRINT TAB(15);"**************************************************"
  36. 450 PRINT TAB(15);"*              By Marshall W. Magee              *"
  37. 460 PRINT TAB(15);"**************************************************"
  38. 470 PRINT TAB(15);"*         MAGEE ENTERPRISES                      *"
  39. 480 PRINT TAB(15);"*         6577 Peachtree Industrial Blvd.        *"
  40. 490 PRINT TAB(15);"*         Norcross, Georgia  30092-3796          *"
  41. 500 PRINT TAB(15);"*         CompuServe [70167,2200]                *"
  42. 510 PRINT TAB(15);"*         (404) 447-9410                         *"
  43. 520 PRINT TAB(15);"**************************************************"
  44. 530 PRINT TAB(15);"*  Please send any comments concerning VIEWER to *"
  45. 540 PRINT TAB(15);"*  the address above.  Suggested donation: $5.00 *"
  46. 550 PRINT TAB(15);"**************************************************"
  47. 560 COLOR FORE,BACK,0
  48. 570 PRINT
  49. 580 PRINT
  50. 590 LINE INPUT "Enter name of file to view (ENTER to end) =>",FILENAME$
  51. 600 IF LEN(FILENAME$)=0 THEN END
  52. 610 OPEN FILENAME$ FOR INPUT AS #1
  53. 620 PRINT "----------------------------- Now Printing file ------------------------"
  54. 630 COLOR 19
  55. 640 PRINT "    Press ESC to quit while printing "
  56. 650 COLOR FORE
  57. 660 PRINT "------------------------------------------------------------------------"
  58. 670 IF EOF(1) THEN PRINT:LINE INPUT"Finished..Press ENTER to continue";ANSWER$ : GOTO 270
  59. 680 '
  60. 690 '   Check for 22 lines to help determine break
  61. 700 '
  62. 710 IF LINES<22 THEN 820
  63. 720 LINES=0
  64. 730 COLOR 30,1
  65. 740 PRINT "Continue (Y),N ? ";
  66. 750 COLOR FORE,BACK
  67. 760 LINE INPUT "";ANSWER$
  68. 770 IF LEN(ANSWER$)=0 OR LEFT$(ANSWER$,1)="Y" OR LEFT$(ANSWER$,1)="y" THEN 820
  69. 780 GOTO 270
  70. 790 '---------------------------------------------------------------------
  71. 800 '   Load one Character from file and check for special codes
  72. 810 '---------------------------------------------------------------------
  73. 820 C=ASC(INPUT$(1,#1))
  74. 830 IF C=12 OR C=141 THEN CLS : GOTO 670
  75. 840 IF C=27 THEN 930
  76. 850 IF C=13 THEN 670
  77. 860 IF C=10 THEN PRINT : LINES=LINES+1 : GOTO 670
  78. 870 PRINT CHR$(C);
  79. 880 IN$=INKEY$ : IF IN$=CHR$(27) THEN 270
  80. 890 GOTO 670
  81. 900 '---------------------------------------------------------------------
  82. 910 '   ESCape character found now check for "ESC [" sequence
  83. 920 '---------------------------------------------------------------------
  84. 930 C$=INPUT$(1,#1)
  85. 940 IF C$<>"[" THEN PRINT CHR$(27);C$ : GOTO 670
  86. 950 OPERANDS=1
  87. 960 CODE$=INPUT$(1,#1) : C=ASC(CODE$)
  88. 970 '---------------------------------------------------------------------
  89. 980 '   Check for numbers
  90. 990 '---------------------------------------------------------------------
  91. 1000 IF C<48 OR C>57 THEN 1620
  92. 1010 '
  93. 1020 '   Load all the operands
  94. 1030 '
  95. 1040 CODE1$=CODE$
  96. 1050 CODE2$=INPUT$(1,#1)
  97. 1060 IF ASC(CODE2$)>57 THEN 1790
  98. 1070 TERM$=INPUT$(1,#1)
  99. 1080 CODES(OPERANDS)=VAL(CODE1$+CODE2$)
  100. 1090 OPERANDS=OPERANDS+1
  101. 1100 IF TERM$<>";" THEN 1160
  102. 1110 CODE1$=INPUT$(1,#1)
  103. 1120 GOTO 1050
  104. 1130 '------------------------------------------------------------------------
  105. 1140 '   ESC [#;...#m
  106. 1150 '------------------------------------------------------------------------
  107. 1160 IF TERM$<>"m" THEN 1230
  108. 1170 FOR LOOP%=1 TO OPERANDS-1
  109. 1180 GOSUB 1280
  110. 1190 NEXT
  111. 1200 '------------------------------------------------------------------------
  112. 1210 '   ESC [#;#f   or   ESC [#;#H          Horizontal and Vertical Position
  113. 1220 '------------------------------------------------------------------------
  114. 1230 IF TERM$="f" OR TERM$="H" THEN LOCATE CODES(1)+1,CODES(2)+1
  115. 1240 GOTO 670
  116. 1250 '-----------------------------------------------------------------------
  117. 1260 '   Changes color information as to SGR function
  118. 1270 '-----------------------------------------------------------------------
  119. 1280 CODE=CODES(LOOP%)
  120. 1290 IF CODE <> 0 THEN 1330
  121. 1300 HIGH=0 : UNDER=0 : BLINK=0 : REVERSE=0 : INVISIBLE=0
  122. 1310 FORE=7 : BACK=0
  123. 1320 GOTO 1500
  124. 1330 IF CODE = 1 THEN HIGH=1 : GOTO 1500
  125. 1340 IF CODE = 4 THEN UNDER=1 : GOTO 1500
  126. 1350 IF CODE = 5 THEN BLINK=1 : GOTO 1500
  127. 1360 IF CODE = 7 THEN REVERSE=1 : GOTO 1500
  128. 1370 IF CODE = 8 THEN INVISIBLE=1 : GOTO 1500
  129. 1380 IF CODE<30 OR CODE>39 THEN 1440
  130. 1390    FORE=CODE-30
  131. 1400    IF FORE=1 THEN FORE=4 : GOTO 1500
  132. 1410    IF FORE=3 THEN FORE=6 : GOTO 1500
  133. 1420    IF FORE=4 THEN FORE=1 : GOTO 1500
  134. 1430    IF FORE=6 THEN FORE=3 : GOTO 1500
  135. 1440 IF CODE<40 OR CODE>49 THEN 1500
  136. 1450    BACK=CODE-40
  137. 1460    IF BACK=1 THEN BACK=4 : GOTO 1500
  138. 1470    IF BACK=3 THEN BACK=6 : GOTO 1500
  139. 1480    IF BACK=4 THEN BACK=1 : GOTO 1500
  140. 1490    IF BACK=6 THEN BACK=3
  141. 1500 FOREGROUND = FORE
  142. 1510 BACKGROUND = BACK
  143. 1520 IF HIGH THEN FOREGROUND = FOREGROUND + 8
  144. 1530 IF BLINK THEN FOREGROUND = FOREGROUND + 16
  145. 1540 IF UNDER THEN FOREGROUND=1
  146. 1550 IF REVERSE THEN FOREGROUND=0 : BACKGROUND=7
  147. 1560 IF INVISIBLE THEN FOREGROUND=BACKGROUND
  148. 1570 COLOR FOREGROUND,BACKGROUND
  149. 1580 RETURN
  150. 1590 '---------------------------------------------------------------------
  151. 1600 '  One Letter Commands
  152. 1610 '---------------------------------------------------------------------
  153. 1620 IF CODE$="H" OR CODE$="f" THEN LOCATE 1,1 : GOTO 670
  154. 1630 '*********************************************************************
  155. 1640 '  Play Music
  156. 1650 '  No other one letter commands so it must be music information
  157. 1660 '*********************************************************************
  158. 1670 MUSIC$=CODE$
  159. 1680 IF INSTR(MUSIC$,CHR$(14)) THEN 1740
  160. 1690 C$=INPUT$(1,#1)
  161. 1700 IF C$=CHR$(14) THEN 1740        ' CHECK FOR CONTROL-N
  162. 1710 MUSIC$=MUSIC$+C$
  163. 1720 IF EOF(1) THEN 670
  164. 1730 GOTO 1690
  165. 1740 PLAY MUSIC$
  166. 1750 GOTO 670
  167. 1760 '---------------------------------------------------------------------
  168. 1770 '  ONE NUMBER AND ONE LETTER COMMANDS
  169. 1780 '---------------------------------------------------------------------
  170. 1790 IF CODE1$+CODE2$ = "2J" THEN CLS: GOTO 670
  171. 1800 PRINT : PRINT
  172. 1810 PRINT "Special Command found that is NOT supported!! =>";CODE1$+CODE2$
  173. 1820 PRINT "Remove code to continue..."
  174. 1830 END
  175. 1840 '
  176. 1850 '  ERROR CATCHING
  177. 1860 '
  178. 1870 IF ERR<>53 THEN 1920
  179. 1880 PRINT : PRINT :PRINT : COLOR 12
  180. 1890 PRINT CHR$(7);" File '";FILENAME$;"' Not Found "
  181. 1900 LINE INPUT "Press ENTER to Continue";ANSWER$
  182. 1910 RESUME 270
  183. 1920 PRINT "ERROR #";ERR;"    In Statement ";ERL
  184. 1930 END
  185.